home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung (Tewi)(1994).iso / magazine / msysjour / vol06 / 03 / wintro6 / stock.h < prev    next >
C/C++ Source or Header  |  1991-05-01  |  7KB  |  232 lines

  1. /*===========================================================================*/
  2. /*                                                                           */
  3. /* File    : STOCK.H                                                         */
  4. /*                                                                           */
  5. /* Purpose :                                                                 */
  6. /*                                                                           */
  7. /* History :                                                                 */
  8. /*                                                                           */
  9. /* (C) Copyright 1990 Marc Adler/Magma Systems     All Rights Reserved       */
  10. /*===========================================================================*/
  11.  
  12.  
  13. extern HANDLE hThisInstance;  /* Program instance handle */
  14. extern HWND hWndMain;         /* Handle to main window   */
  15. extern HWND hwndMDIClient;    /* Handle to MDI client    */
  16. extern HWND hWndActive;
  17. extern HWND hWndStatus;
  18.   #define Y_STATUSWINDOW   20   /* The height of the status window */
  19. extern HANDLE hCurrStockInfo;
  20.  
  21. #define CBWNDEXTRA          sizeof(HANDLE)
  22.  
  23.  
  24. /*
  25.   Stock information
  26. */
  27.  
  28. #define MAXSTOCKNAME     5
  29. #define MAXDESCRIPTION   32
  30.  
  31. typedef struct tagDate
  32. {
  33.   BYTE   chMonth;
  34.   BYTE   chDay;
  35.   BYTE   chYear;
  36. } DATE;
  37.  
  38. typedef  DWORD  PRICE;      /* dollar amt * iDenominator + fractional amount */
  39. typedef  DWORD  VOLUME;
  40.  
  41. typedef struct tagTick
  42. {
  43.   PRICE  price;
  44.   VOLUME dwVolume;
  45.   DATE   date;
  46. } TICK, FAR *LPTICK;
  47.  
  48. /*
  49.   Data structure describing how we draw the graph
  50. */
  51. typedef struct tagGraphInfo
  52. {
  53.   PRICE dwMinPrice;
  54.   PRICE dwMaxPrice;
  55.   DWORD dwScaleFactor;
  56.   DWORD dwTickInterval;
  57.   WORD  iDenominator;    /* the fractional amount used for this stock */
  58.   WORD  iGridPen;
  59. } GRAPHINFO, FAR *LPGRAPHINFO;
  60.  
  61.  
  62. typedef struct tagStockFile
  63. {
  64.   DWORD  dwMagic;
  65. #define MAGIC_COOKIE             66666666L
  66.   char   szStock[MAXSTOCKNAME];
  67.   char   szDescription[MAXDESCRIPTION];
  68.   GRAPHINFO graphinfo;
  69.   WORD   nTicks;
  70. /*
  71.   TICK   aTicks[1];
  72. */
  73. } STOCKFILE;
  74.  
  75. #define TICKER_CHUNK    64
  76.  
  77. typedef struct tagGraphAttributes
  78. {
  79.   WORD     iMappingMode;
  80.   COLORREF clrPen,
  81.            clrBackground;
  82.   WORD     idxPen,
  83.            idxBackground;
  84.   HFONT    hFont;
  85. } GRAPHATTRIBUTES;
  86.  
  87.  
  88.  
  89. typedef struct tagInCoreStockInfo
  90. {
  91.   char      szFileName[14];  /* file name where the stock data is kept  */
  92.   STOCKFILE StockFile;       /* a copy of the stock file header         */
  93.   HANDLE    hTicks;
  94.   WORD      nTicksAllocated; /* how large the ticker array is           */
  95.   HWND      hWnd;            /* window which the stock is shown in      */
  96.   DWORD     dwFlags;         /* any kind of status bits we need to keep */
  97. #define STATE_HAS_VGRID  1L
  98. #define STATE_HAS_HGRID  2L
  99. #define STATE_DIRTY      4L
  100.   GRAPHATTRIBUTES graphAttrs;
  101. } STOCKINFO, FAR *LPSTOCKINFO;
  102.  
  103.  
  104.  
  105. #define ID_ABOUT            99
  106. #define ID_STOCK            100
  107. #define ID_GRAPH            101
  108.  
  109. #define ID_NEW              101
  110. #define ID_OPEN             102
  111. #define ID_SAVE             103
  112. #define ID_CLOSE            104
  113. #define ID_PRINT            105
  114. #define ID_EXIT             106
  115. #define ID_MAP              107
  116.  
  117. #define ID_TICK_ADD         200
  118. #define ID_TICK_CHANGE      201
  119. #define ID_GRAPH_PRICE      202
  120. #define ID_GRAPH_VOLUME     203
  121. #define ID_GRAPH_FONTS      204
  122. #define ID_GRAPH_COLORS     205
  123. #define ID_GRAPH_OPTIONS    199
  124. #define ID_GRAPH_GRID_HORZ  206
  125. #define ID_GRAPH_GRID_VERT  207
  126. #define ID_GRAPH_ISOTROPIC  230
  127. #define ID_GRAPH_ANISOTROPIC  231
  128.  
  129. #define ID_WINDOW_TILE      208
  130. #define ID_WINDOW_CASCADE   209
  131. #define ID_WINDOW_ICONS     210
  132. #define ID_WINDOW_CLOSEALL  211
  133. #define ID_WINDOW_CHILDREN  220
  134.  
  135. #define ID_TICK_DATE        100
  136. #define ID_TICK_PRICE       101
  137. #define ID_TICK_VOLUME      102
  138.  
  139.  
  140. #define ID_RECTTEXT   120
  141. #define ID_VXEXT      109
  142. #define ID_VXORG      107
  143. #define ID_VYEXT      111
  144. #define ID_VYORG      113
  145. #define ID_WXEXT      103
  146. #define ID_WXORG      101
  147. #define ID_WYEXT      105
  148. #define ID_WYORG      115
  149.  
  150. #define IDC_FILENAME  400
  151. #define IDC_EDIT      401
  152. #define IDC_FILES     402
  153. #define IDC_PATH      403
  154. #define IDC_LISTBOX   404
  155.  
  156.  
  157. /*
  158.   Stuff for graph dialog box
  159. */
  160. #define ID_SYMBOL     300
  161. #define ID_MINPRICE   301
  162. #define ID_MAXPRICE   302
  163. #define ID_FACTOR     303
  164. #define ID_TICKINT    304
  165. #define ID_HORZGRID   305
  166. #define ID_VERTGRID   306
  167. #define ID_GRIDSTYLE  307
  168. #define ID_HELP       308
  169. #define ID_DENOMINATOR 309
  170.  
  171. /*
  172.   Colors dialog
  173. */
  174. #define ID_PENCOLOR   320
  175. #define ID_BACKCOLOR  350
  176.  
  177. /* Cancel printing dlg box */
  178. #define IDD_PRINTTITLE  101
  179. #define IDD_PRINTDEVICE 103
  180. #define IDD_PRINTPORT   105
  181. #define ID_LISTBOX      107
  182.  
  183. /* Font dialog box */
  184. BOOL FAR PASCAL FontDlgProc(HWND hDlg, unsigned message, WORD wParam, LONG lParam);
  185. #define ID_FACELIST     100
  186. #define ID_SIZELIST     101
  187. #define ID_TESTFONT     102
  188.  
  189.  
  190.  
  191. int NEAR PASCAL WinMain(HANDLE, HANDLE, LPSTR, int);
  192. BOOL FAR PASCAL InitializeApplication(VOID);
  193. BOOL FAR PASCAL InitializeInstance(LPSTR lpCmdLine, WORD nCmdShow);
  194. LONG FAR PASCAL MainWndProc(HWND, WORD, WORD, LONG);
  195. LONG FAR PASCAL StatusWndProc(HWND, WORD, WORD, LONG);
  196. LONG FAR PASCAL GraphWndProc(HWND, WORD, WORD, LONG);
  197. BOOL FAR PASCAL AboutDlgProc(HWND, WORD, WORD, LONG);
  198. BOOL FAR PASCAL MapDlgProc(HWND, WORD, WORD, LONG);
  199. BOOL FAR PASCAL AddTickDlgProc(HWND, WORD, WORD, LONG);
  200. BOOL FAR PASCAL ChangeTickDlgProc(HWND, WORD, WORD, LONG);
  201. BOOL FAR PASCAL GraphOptionsDlgProc(HWND, WORD, WORD, LONG);
  202. HANDLE   PASCAL StockInfoAlloc(void);
  203. int PASCAL StockFileSave(HANDLE hStockInfo);
  204. VOID MainPaint(HWND, HDC);
  205. int PASCAL StockFileRead(LPSTR szFileName);
  206. HWND PASCAL GraphCreateWindow(LPSTR lpName);
  207. int PASCAL GraphWndPaint(HWND hWnd, HDC hDC, LPSTOCKINFO lpStockInfo, BOOL bPrinting);
  208. BOOL FAR PASCAL GraphColorsDlgProc(HWND, WORD, WORD, LONG);
  209. VOID PASCAL CreateMDIClient(HWND hwndParent);
  210.  
  211. /* FILEOPEN.C */
  212. HANDLE FAR PASCAL OpenDlg(HWND, unsigned, WORD, LONG);
  213. void SeparateFile(HWND, LPSTR, LPSTR, LPSTR);
  214. void UpdateListBox(HWND);
  215. void AddExt(PSTR, PSTR);
  216. void ChangeDefExt(PSTR, PSTR);
  217.  
  218. LONG FAR PASCAL GetDlgItemLong(HWND hDlg, WORD id, BOOL FAR *lpTranslated, BOOL bSigned);
  219. VOID FAR PASCAL SetDlgItemLong(HWND hDlg, WORD id, LONG lNum);
  220. VOID PASCAL ClipWindowToStatusLine(HWND hWnd);
  221. int PASCAL ErrorMessage(WORD idMsg);
  222. BOOL PASCAL PrintFile(void);
  223.  
  224. #define  ERR_CANTOPEN             10000
  225. #define  ERR_CANTALLOCINFO        10001
  226. #define  ERR_BADHEADER            10002
  227. #define  ERR_BADSIG               10003
  228. #define  ERR_CANTALLOCTICKER      10004
  229. #define  ERR_CANTREADTICKER       10005
  230. #define  ERR_BADLOCK              10006
  231.  
  232.